home *** CD-ROM | disk | FTP | other *** search
/ MacFormat 1995 March / macformat-022.iso / Shareware City / Developers / ANSI folder / INTO Runtime ƒ / C++ 68K ƒ / Sources ƒ / NewMore68K.cp < prev    next >
Encoding:
Text File  |  1994-07-01  |  1.4 KB  |  48 lines  |  [TEXT/MMCC]

  1. /************************************************************************/
  2. /*    Project...:    Standard C++ Library                                    */
  3. /*    Name......:    NewMore.cp                                                */
  4. /*    Purpose...:    standard C++ library                                    */
  5. /*  Copyright.: ©Copyright 1994 by metrowerks inc. All rights reserved. */
  6. /************************************************************************/
  7.  
  8. #include <new.h>
  9. #include <Memory.h>
  10. #include <CPlusLib68K.h>
  11.  
  12. #pragma a6frames on
  13.  
  14. void (*new_handler)();
  15.  
  16. extern void (*set_new_handler (void (*new_new_handler) ())) ()
  17. {
  18.     void (*old_new_handler)() = new_handler;
  19.     new_handler = new_new_handler;
  20.     return old_new_handler;
  21. }
  22.  
  23. /************************************************************************/
  24. /*    Purpose..:     Allocate memory    (handle)                                */
  25. /*    Input....:    size of memory to allocate                                */
  26. /*    Return...:    handle to memory or 0L                                    */
  27. /************************************************************************/
  28. void *__new_hdl(size_t size)
  29. {
  30.     void *ptr;
  31.  
  32.     while((ptr=NewHandle(size))==NULL)
  33.     {
  34.         if(new_handler) new_handler(); else return(NULL);
  35.     }
  36.     return(ptr);
  37. }
  38.  
  39. /************************************************************************/
  40. /*    Purpose..:     Dispose memory (handle)                                    */
  41. /*    Input....:    handle to memory or 0L (no action if 0L)                */
  42. /*    Return...:    ---                                                        */
  43. /************************************************************************/
  44. void __del_hdl(void *hdl)
  45. {
  46.     if(hdl) DisposHandle((Handle)hdl);
  47. }
  48.